<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>20.11. xml.sax.saxutils — SAX Utilities &mdash; Python 3.4.3 documentation</title>
    
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '3.4.3',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/sidebar.js"></script>
    <link rel="search" type="application/opensearchdescription+xml"
          title="Search within Python 3.4.3 documentation"
          href="../_static/opensearch.xml"/>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="copyright" title="Copyright" href="../copyright.html" />
    <link rel="top" title="Python 3.4.3 documentation" href="../index.html" />
    <link rel="up" title="20. Structured Markup Processing Tools" href="markup.html" />
    <link rel="next" title="20.12. xml.sax.xmlreader — Interface for XML parsers" href="xml.sax.reader.html" />
    <link rel="prev" title="20.10. xml.sax.handler — Base classes for SAX handlers" href="xml.sax.handler.html" />
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
    <script type="text/javascript" src="../_static/copybutton.js"></script>
    <script type="text/javascript" src="../_static/version_switch.js"></script>
    
 

  </head>
  <body>  
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="xml.sax.reader.html" title="20.12. xml.sax.xmlreader — Interface for XML parsers"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="xml.sax.handler.html" title="20.10. xml.sax.handler — Base classes for SAX handlers"
             accesskey="P">previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="https://www.python.org/">Python</a> &raquo;</li>
        <li>
          <span class="version_switcher_placeholder">3.4.3</span>
          <a href="../index.html">Documentation</a> &raquo;
        </li>

          <li><a href="index.html" >The Python Standard Library</a> &raquo;</li>
          <li><a href="markup.html" accesskey="U">20. Structured Markup Processing Tools</a> &raquo;</li> 
      </ul>
    </div>    

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="module-xml.sax.saxutils">
<span id="xml-sax-saxutils-sax-utilities"></span><h1>20.11. <a class="reference internal" href="#module-xml.sax.saxutils" title="xml.sax.saxutils: Convenience functions and classes for use with SAX."><tt class="xref py py-mod docutils literal"><span class="pre">xml.sax.saxutils</span></tt></a> &#8212; SAX Utilities<a class="headerlink" href="#module-xml.sax.saxutils" title="Permalink to this headline">¶</a></h1>
<p>The module <a class="reference internal" href="#module-xml.sax.saxutils" title="xml.sax.saxutils: Convenience functions and classes for use with SAX."><tt class="xref py py-mod docutils literal"><span class="pre">xml.sax.saxutils</span></tt></a> contains a number of classes and functions
that are commonly useful when creating SAX applications, either in direct use,
or as base classes.</p>
<dl class="function">
<dt id="xml.sax.saxutils.escape">
<tt class="descclassname">xml.sax.saxutils.</tt><tt class="descname">escape</tt><big>(</big><em>data</em>, <em>entities={}</em><big>)</big><a class="headerlink" href="#xml.sax.saxutils.escape" title="Permalink to this definition">¶</a></dt>
<dd><p>Escape <tt class="docutils literal"><span class="pre">'&amp;'</span></tt>, <tt class="docutils literal"><span class="pre">'&lt;'</span></tt>, and <tt class="docutils literal"><span class="pre">'&gt;'</span></tt> in a string of data.</p>
<p>You can escape other strings of data by passing a dictionary as the optional
<em>entities</em> parameter.  The keys and values must all be strings; each key will be
replaced with its corresponding value.  The characters <tt class="docutils literal"><span class="pre">'&amp;'</span></tt>, <tt class="docutils literal"><span class="pre">'&lt;'</span></tt> and
<tt class="docutils literal"><span class="pre">'&gt;'</span></tt> are always escaped, even if <em>entities</em> is provided.</p>
</dd></dl>

<dl class="function">
<dt id="xml.sax.saxutils.unescape">
<tt class="descclassname">xml.sax.saxutils.</tt><tt class="descname">unescape</tt><big>(</big><em>data</em>, <em>entities={}</em><big>)</big><a class="headerlink" href="#xml.sax.saxutils.unescape" title="Permalink to this definition">¶</a></dt>
<dd><p>Unescape <tt class="docutils literal"><span class="pre">'&amp;amp;'</span></tt>, <tt class="docutils literal"><span class="pre">'&amp;lt;'</span></tt>, and <tt class="docutils literal"><span class="pre">'&amp;gt;'</span></tt> in a string of data.</p>
<p>You can unescape other strings of data by passing a dictionary as the optional
<em>entities</em> parameter.  The keys and values must all be strings; each key will be
replaced with its corresponding value.  <tt class="docutils literal"><span class="pre">'&amp;amp'</span></tt>, <tt class="docutils literal"><span class="pre">'&amp;lt;'</span></tt>, and <tt class="docutils literal"><span class="pre">'&amp;gt;'</span></tt>
are always unescaped, even if <em>entities</em> is provided.</p>
</dd></dl>

<dl class="function">
<dt id="xml.sax.saxutils.quoteattr">
<tt class="descclassname">xml.sax.saxutils.</tt><tt class="descname">quoteattr</tt><big>(</big><em>data</em>, <em>entities={}</em><big>)</big><a class="headerlink" href="#xml.sax.saxutils.quoteattr" title="Permalink to this definition">¶</a></dt>
<dd><p>Similar to <a class="reference internal" href="#xml.sax.saxutils.escape" title="xml.sax.saxutils.escape"><tt class="xref py py-func docutils literal"><span class="pre">escape()</span></tt></a>, but also prepares <em>data</em> to be used as an
attribute value.  The return value is a quoted version of <em>data</em> with any
additional required replacements. <a class="reference internal" href="#xml.sax.saxutils.quoteattr" title="xml.sax.saxutils.quoteattr"><tt class="xref py py-func docutils literal"><span class="pre">quoteattr()</span></tt></a> will select a quote
character based on the content of <em>data</em>, attempting to avoid encoding any
quote characters in the string.  If both single- and double-quote characters
are already in <em>data</em>, the double-quote characters will be encoded and <em>data</em>
will be wrapped in double-quotes.  The resulting string can be used directly
as an attribute value:</p>
<div class="highlight-python3"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="s">&quot;&lt;element attr=%s&gt;&quot;</span> <span class="o">%</span> <span class="n">quoteattr</span><span class="p">(</span><span class="s">&quot;ab &#39; cd </span><span class="se">\&quot;</span><span class="s"> ef&quot;</span><span class="p">))</span>
<span class="go">&lt;element attr=&quot;ab &#39; cd &amp;quot; ef&quot;&gt;</span>
</pre></div>
</div>
<p>This function is useful when generating attribute values for HTML or any SGML
using the reference concrete syntax.</p>
</dd></dl>

<dl class="class">
<dt id="xml.sax.saxutils.XMLGenerator">
<em class="property">class </em><tt class="descclassname">xml.sax.saxutils.</tt><tt class="descname">XMLGenerator</tt><big>(</big><em>out=None</em>, <em>encoding='iso-8859-1'</em>, <em>short_empty_elements=False</em><big>)</big><a class="headerlink" href="#xml.sax.saxutils.XMLGenerator" title="Permalink to this definition">¶</a></dt>
<dd><p>This class implements the <a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.ContentHandler" title="xml.sax.handler.ContentHandler"><tt class="xref py py-class docutils literal"><span class="pre">ContentHandler</span></tt></a> interface
by writing SAX
events back into an XML document. In other words, using an <a class="reference internal" href="#xml.sax.saxutils.XMLGenerator" title="xml.sax.saxutils.XMLGenerator"><tt class="xref py py-class docutils literal"><span class="pre">XMLGenerator</span></tt></a>
as the content handler will reproduce the original document being parsed. <em>out</em>
should be a file-like object which will default to <em>sys.stdout</em>. <em>encoding</em> is
the encoding of the output stream which defaults to <tt class="docutils literal"><span class="pre">'iso-8859-1'</span></tt>.
<em>short_empty_elements</em> controls the formatting of elements that contain no
content:  if <em>False</em> (the default) they are emitted as a pair of start/end
tags, if set to <em>True</em> they are emitted as a single self-closed tag.</p>
<div class="versionadded">
<p><span class="versionmodified">New in version 3.2: </span>The <em>short_empty_elements</em> parameter.</p>
</div>
</dd></dl>

<dl class="class">
<dt id="xml.sax.saxutils.XMLFilterBase">
<em class="property">class </em><tt class="descclassname">xml.sax.saxutils.</tt><tt class="descname">XMLFilterBase</tt><big>(</big><em>base</em><big>)</big><a class="headerlink" href="#xml.sax.saxutils.XMLFilterBase" title="Permalink to this definition">¶</a></dt>
<dd><p>This class is designed to sit between an
<a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.XMLReader" title="xml.sax.xmlreader.XMLReader"><tt class="xref py py-class docutils literal"><span class="pre">XMLReader</span></tt></a> and the client
application&#8217;s event handlers.  By default, it does nothing but pass requests up
to the reader and events on to the handlers unmodified, but subclasses can
override specific methods to modify the event stream or the configuration
requests as they pass through.</p>
</dd></dl>

<dl class="function">
<dt id="xml.sax.saxutils.prepare_input_source">
<tt class="descclassname">xml.sax.saxutils.</tt><tt class="descname">prepare_input_source</tt><big>(</big><em>source</em>, <em>base=''</em><big>)</big><a class="headerlink" href="#xml.sax.saxutils.prepare_input_source" title="Permalink to this definition">¶</a></dt>
<dd><p>This function takes an input source and an optional base URL and returns a
fully resolved <a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.InputSource" title="xml.sax.xmlreader.InputSource"><tt class="xref py py-class docutils literal"><span class="pre">InputSource</span></tt></a> object ready for
reading.  The input source can be given as a string, a file-like object, or
an <a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.InputSource" title="xml.sax.xmlreader.InputSource"><tt class="xref py py-class docutils literal"><span class="pre">InputSource</span></tt></a> object; parsers will use this
function to implement the polymorphic <em>source</em> argument to their
<tt class="xref py py-meth docutils literal"><span class="pre">parse()</span></tt> method.</p>
</dd></dl>

</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h4>Previous topic</h4>
  <p class="topless"><a href="xml.sax.handler.html"
                        title="previous chapter">20.10. <tt class="docutils literal"><span class="pre">xml.sax.handler</span></tt> &#8212; Base classes for SAX handlers</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="xml.sax.reader.html"
                        title="next chapter">20.12. <tt class="docutils literal"><span class="pre">xml.sax.xmlreader</span></tt> &#8212; Interface for XML parsers</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
  <li><a href="../bugs.html">Report a Bug</a></li>
  <li><a href="../_sources/library/xml.sax.utils.txt"
         rel="nofollow">Show Source</a></li>
</ul>

<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>  
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="xml.sax.reader.html" title="20.12. xml.sax.xmlreader — Interface for XML parsers"
             >next</a> |</li>
        <li class="right" >
          <a href="xml.sax.handler.html" title="20.10. xml.sax.handler — Base classes for SAX handlers"
             >previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="https://www.python.org/">Python</a> &raquo;</li>
        <li>
          <span class="version_switcher_placeholder">3.4.3</span>
          <a href="../index.html">Documentation</a> &raquo;
        </li>

          <li><a href="index.html" >The Python Standard Library</a> &raquo;</li>
          <li><a href="markup.html" >20. Structured Markup Processing Tools</a> &raquo;</li> 
      </ul>
    </div>  
    <div class="footer">
    &copy; <a href="../copyright.html">Copyright</a> 1990-2015, Python Software Foundation.
    <br />
    The Python Software Foundation is a non-profit corporation.
    <a href="https://www.python.org/psf/donations/">Please donate.</a>
    <br />
    Last updated on Feb 26, 2015.
    <a href="../bugs.html">Found a bug</a>?
    <br />
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2.3.
    </div>

  </body>
</html>